package com.mimiwang.common.utils;

import com.alibaba.fastjson.JSONObject;


/**
 * @author by guiwei
 * @Classname ResponseUtil
 * @Description 返回值统一工具类
 * @Date 2022/1/22 16:10
 */


public class ResponseUtil extends JSONObject {



    public static BaseUtil successJSONObject(String msg){
        return successJSONObject(msg,null);

    }
    public static BaseUtil successJSONObject(String msg, Object data){
        return successJSONObject(200,msg,data);

    }

    public static BaseUtil successJSONObject(int code,String msg, Object data){
        return new BaseUtil(code, msg, data);

    }

    public static BaseUtil errorJSONObject(String msg){
        return errorJSONObject(msg,null);

    }
    public static BaseUtil errorJSONObject(String msg, Object data){
        return errorJSONObject(500,msg,data);

    }
    public static BaseUtil errorJSONObject(int code,String msg, Object data){
        return new BaseUtil(code, msg, data);

    }


    public static String successJSONData(int code, String msg, Object data){
        return toJSONString(new BaseUtil(code, msg, data));
    }

    /**
     * @author guiwei
     * @name successJSONData
     * @param msg
     * @param data
     * @return java.lang.String
     * @throws
     * @description 响应成功返回200，需自定义响应信息和响应数据
     */
    public static String successJSONData(String msg, Object data){
        return toJSONString(new BaseUtil(200,msg,data));
    }

    /**
     * @author guiwei
     * @name successJSONData
     * @param data
     * @return java.lang.String
     * @throws
     * @description 请求成功返回200，"请求成功"字样，需传入响应数据data
     */
    public static String successJSONData(Object data){
        return toJSONString(new BaseUtil(200,"请求成功",data));
    }

    /**
     * @author guiwei
     * @name successJSONData
     * @param
     * @return java.lang.String
     * @throws
     * @description 请求成功，默认返回200，不需要传入任何参数，多用于增、删、改操作
     */
    public static String successJSONData(){
        return toJSONString(new BaseUtil(200,"操作成功",null));
    }

    /**
     * @author guiwei
     * @name errorJSONData
     * @param code
     * @param msg
     * @param data
     * @return java.lang.String
     * @throws
     * @description 请求失败，自定义返回状态码，提示信息，响应数据
     */
    public static String errorJSONData(int code, String msg, Object data){
        return toJSONString(new BaseUtil(code,msg,data));
    }

    /**
     * @author guiwei
     * @name errorJSONData
     * @param msg
     * @param data
     * @return java.lang.String
     * @throws
     * @description 请求失败，默认返回500，需自定义提示信息，响应数据
     */
    public static String errorJSONData(String msg, Object data){
        return toJSONString(new BaseUtil(500,msg,data));
    }

    /**
     * @author guiwei
     * @name errorJSONData
     * @param code
     * @param msg
     * @return java.lang.String
     * @throws
     * @description 请求失败，需自定义返回状态码，提示信息，响应数据默认为null
     */
    public static String errorJSONData(int code, String msg){
        return toJSONString(new BaseUtil(code,msg,null));
    }

    /**
     * @author guiwei
     * @name errorJSONData
     * @param
     * @return java.lang.String
     * @throws
     * @description 请求失败，默认返回500，不需要传入任何参数，多用于增、删、改操作
     */
    public static String errorJSONData(){
        return toJSONString(new BaseUtil(500,"系统异常，操作失败！",null));
    }

    /**
     * @author guiwei
     * @name errorJSONData
     * @param msg
     * @return java.lang.String
     * @throws
     * @description 请求失败，默认返回500，需自定义提示信息
     */
    public static String errorJSONData(String msg){
        return toJSONString(new BaseUtil(500,msg,null));
    }
    public static Class<BaseUtil> getResponseClass(){
        return BaseUtil.class;
    }
    public static class BaseUtil{
        /*响应状态码*/
        private int code;

        /*响应信息*/
        private String msg;

        /*响应数据*/
        private Object data;

        public BaseUtil(int code, String msg, Object data) {
            this.code = code;
            this.msg = msg;
            this.data = data;
        }

        public int getCode() {
            return code;
        }

        public void setCode(int code) {
            this.code = code;
        }

        public String getMsg() {
            return msg;
        }

        public void setMsg(String msg) {
            this.msg = msg;
        }

        public Object getData() {
            return data;
        }

        public void setData(Object data) {
            this.data = data;
        }
    }

}